#ifndef DYN_QUAD_QGAUSS32_H
#define DYN_QUAD_QGAUSS32_H

#include "dyn_quad_qGauss.h"

/*! \author Joey Dumont <joey.dumont@gmail.com>
 *
 *  \date 2012-10-07
 *
 *  \brief Gaussian quadrature with \f$N=32\f$.
 *
 * We define the variables associated with
 * \f$N=32\f$ Gaussian quadrature. The values
 * are taken from Abramowitz and Stegun.
 */

class qGauss32 : public qGauss
{
public:
    /*! Standard constructor for qGauss. */
    qGauss32(Functor &_func,
             double _a,
             double _b);

    /*! Re-declared pure virtual function. */
    void populateVectors();

protected:
    /*! @name Abscissas */
    //@{
    double x1 = 0.048307665687738316235;
    double x2 = 0.144471961582796493485;
    double x3 = 0.239287362252137074545;
    double x4 = 0.331868602282127649780;
    double x5 = 0.421351276130635345364;
    double x6 = 0.506899908932229390024;
    double x7 = 0.587715757240762329041;
    double x8 = 0.663044266930215200975;
    double x9 = 0.732182118740289680387;
    double x10 = 0.794483795967942406963;
    double x11 = 0.849367613732569970134;
    double x12 = 0.896321155766052123965;
    double x13 = 0.934906075937739689171;
    double x14 = 0.964762255587506430774;
    double x15 = 0.985611511545268335400;
    double x16 = 0.997263861849481563545;
    //@}

    /*! @name Weights */
    //@{
    double w1 = 0.096540088514727800567;
    double w2 = 0.095638720079274859419;
    double w3 = 0.093844399080804565639;
    double w4 = 0.091173878695763884713;
    double w5 = 0.087652093004403811143;
    double w6 = 0.083311924226946755222;
    double w7 = 0.078193895787070306472;
    double w8 = 0.072345794108848506225;
    double w9 = 0.065822222776361846838;
    double w10 = 0.058684093478535547145;
    double w11 = 0.050998059262376176196;
    double w12 = 0.042835898022226680657;
    double w13 = 0.034273862913021433103;
    double w14 = 0.025392065309262059456;
    double w15 = 0.016274394730905670605;
    double w16 = 0.007018610009470096600;
    //@}
};

#endif // DYN_QUAD_QGAUSS32_H
